class Solution1745_2 {
    public boolean checkPartitioning(String s) {
        int n = s.length() ;
        char[] arr = s.toCharArray() ;
        boolean[][] dp = new boolean[n][n] ;
        for(int i=n-1 ; i >= 0  ; i --){
            for(int j=i ; j < n ; j ++){
                if(arr[i] == arr[j]){
                    if(i == j || i+1 == j){
                        dp[i][j] = true ;
                    }else {
                        dp[i][j] = dp[i+1][j-1] ;
                    }
                }
            }
        }
        for(int i=1 ; i < n-1 ; i ++){
            for(int j=i+1 ; j < n ; j ++){
                if(dp[0][i-1] && dp[i][j-1] && dp[j][n-1]){
                    return true ;
                }
            }
        }


        return false ;
    }
}